package com.itheima.day04;

import java.util.Random;

/*
小明去彩票站买彩票，随机一注双色球。使用数组存储小明的随机的彩票数字。 双色球规则 ：有6个红球加1个蓝
球，每个红球的范围是[1-32]， 蓝球的范围是[1-16]， 红球之间的数字不可重复，蓝球是可以和红球重复的,用数组存
储7个元素(数组中的元素,不考虑排序问题)

    红球为 : 8 29 21 31 12 5 蓝球为 : 14
 */
public class Test04 {
    public static void main(String[] args) {
        int[] arr = new int[7];

        Random r = new Random();

        //先处理前面6个红球
        for (int i = 0; i < arr.length - 1; i++) {
            //红球的范围是[1-32]
            int red = r.nextInt(32) + 1;

            //判断当前生成的红球号码是否存在重复
            //标记位思想: 先假设没人跟我重复
            boolean flag = false; //false : 表示不重复, true: 有重复

            //遍历所有红球
            for (int j = 0; j < arr.length - 1; j++) {
                //拿每一个红球和当前red进行比对
                if(arr[j] == red){
                    // 只要有人的号码和我本次生成的号码相同,表示存在重复,这时候就需要修改标记为true
                    flag = true;
                    break;
                }
            }

            //根据flag的值来决定当前red号码能不能用
            if (flag){
                // 有重复,则本次循环回退,重新生成
                i--;
            }else {
                // 没有重复, 就使用当前号码
                arr[i] = red;
            }
        }

        //最后再处理1个蓝球
        arr[6] = r.nextInt(16) + 1;

        // 遍历数组arr,将所有球号打印
        System.out.print("红球为 : ");

        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length -1){
                System.out.println("蓝球为 : " + arr[i]);
            }else{
                System.out.print(arr[i] + " ");
            }
        }
    }
}
